home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 May: Tool Chest / Developer CD Series May 1996 (Tool Chest) (Apple Computer) (1996).iso / Sample Code / Snippets / Files / PBDTGetAppl / Source / MenuDispatch.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-10-07  |  1.7 KB  |  89 lines  |  [TEXT/KAHL]

  1. /*
  2.     9-30-92  • Brigham Stevens
  3.     --------------------------
  4.     Menu.c        This handles Menu command dispatching 
  5.     
  6.     This is a bare minimum menu initializer and dispatcher.
  7.     Menus are initialized from an MBAR resource id 128.  To add new menus
  8.     you must change this resource.
  9.  
  10. */
  11.  
  12. #include "EventLoop.h"
  13. #include "MenuDispatch.h"
  14.  
  15. void BuildMenuBars(void)
  16. {
  17.     Handle mbar;
  18.     
  19.     mbar=GetNewMBar(128);
  20.     if(mbar) {
  21.         SetMenuBar(mbar);
  22.         AddResMenu(GetMHandle(APPLE_MENU),'DRVR');
  23.         DrawMenuBar();
  24.     } else {
  25.         ErrMsg("\pMenubar resouce not loaded.  Program will abort.");
  26.         ExitToShell();
  27.     }
  28. }
  29.  
  30. void RunDeskAccesory(short item)
  31. {
  32.     GrafPtr        savePort;
  33.     short        daRefNum;
  34.     Str255        daName;
  35.     
  36.     GetPort(&savePort);
  37.     GetItem(GetMHandle(APPLE_MENU), item, &daName);
  38.     daRefNum = OpenDeskAcc(&daName);
  39.     SetPort(savePort);
  40. }
  41.  
  42. void ChooseApple(short itemNumber)
  43. {
  44.     short item;
  45.     
  46.     if(itemNumber == APPLE_ABOUT) {
  47.         item = Alert(ABOUT_BOX_ID,nil);
  48.     } else {
  49.         RunDeskAccesory(itemNumber);
  50.     }
  51. }
  52.  
  53. void ChooseFile(short item)
  54. {
  55.     switch(item) {
  56.         case FILE_PRINT    :    PrintWindow();
  57.                             break;
  58.         case FILE_QUIT    :    Done = true;
  59.                             break;
  60.         default:            break;
  61.     }
  62. }
  63.  
  64.  
  65. void ChooseEdit(short item)
  66. /*
  67.     Does not support edit menu.  Assumes that if the edit menu is enabled
  68.     that it is for desk accessories.  (pre MF or system 7, or MF with optionkey)
  69. */
  70. {
  71.     SystemEdit(item-1);
  72. }
  73.  
  74. void MenuDispatch(short menuNumber,short itemNumber)
  75. {
  76.     if(menuNumber != 0)
  77.         switch(menuNumber) {
  78.             case APPLE_MENU :     ChooseApple(itemNumber);
  79.                                 break;
  80.             case FILE_MENU :    ChooseFile(itemNumber);
  81.                                 break;
  82.             case EDIT_MENU :    ChooseEdit(itemNumber);
  83.                                 break;
  84.             case SLIM_MENU :    ChooseSlim(itemNumber);
  85.                                 break;
  86.             default :            break;
  87.         }
  88. }
  89.